package lol.clann.minecraft.exampleplugin;

import lol.clann.minecraft.springboot.adapter.api.config.Configure;
import lol.clann.minecraft.springboot.adapter.api.config.PreConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

/**
 * 插件包路径下,被@Service注解的类,会作为一个单例bean,交给spring进行管理
 *
 * SBP会自动使用类中定义的配置的默认值生成配置文件
 *
 * 建议所有配置路径,都以当前插件的id开头
 *
 * sprin
 *
 * @author pyz
 * @date 2019/5/12 12:37 PM
 */
@Service
public class ExampleConfig {

    //   记录日志
    private static Logger LOGGER = LoggerFactory.getLogger(ExampleConfig.class);

    @Configure(value = "exampleplugin.message.hello")
    private String helloMessage = "玩家 {} 进入了服务器";

    @Configure(value = "exampleplugin.message.quit")
    private String quitMessage = "玩家 {} 退出了服务器";

    public String getHelloMessage() {
        return helloMessage;
    }

    public String getQuitMessage() {
        return quitMessage;
    }

    /**
     * 配置注入回调,在当前对象配置注入前调用
     * 重载插件时也会触发回调
     */
    @PreConfig
    private void onPreConfig() {
        LOGGER.info("开始注入配置:" + this.getClass().getName());
    }

    /**
     * 配置注入回调,在当前对象配置注后前调用
     * 重载插件时也会触发回调
     */
    @PostConstruct
    private void onPostConfig() {
        LOGGER.info("配置注入完成:" + this.getClass().getName());
    }
}
